package com.ias.business.testbiz.service;

import com.ias.business.testbiz.entity.TestBizEntity;

import java.time.LocalDateTime;
import java.util.List;
import java.util.Map;

/**
 * 测试业务Mapper演示服务接口
 * 展示如何使用Mapper.xml中定义的自定义SQL方法
 * 
 * @author IAS Team
 * @since 1.0.0
 */
public interface TestBizMapperDemoService {

    /**
     * 演示基础查询功能
     * 
     * @param bizCode 业务编码
     * @return 业务实体
     */
    TestBizEntity demonstrateBasicQuery(String bizCode);

    /**
     * 演示批量操作功能
     * 
     * @param entities 实体列表
     * @return 操作结果
     */
    Map<String, Object> demonstrateBatchOperations(List<TestBizEntity> entities);

    /**
     * 演示条件查询功能
     * 
     * @param keyword 搜索关键词
     * @param bizType 业务类型
     * @param status 状态
     * @return 查询结果统计
     */
    Map<String, Object> demonstrateConditionalQuery(String keyword, Integer bizType, Integer status);

    /**
     * 演示统计分析功能
     * 
     * @param bizType 业务类型（可选）
     * @return 统计分析结果
     */
    Map<String, Object> demonstrateStatisticsAnalysis(Integer bizType);

    /**
     * 演示时间范围查询
     * 
     * @param startTime 开始时间
     * @param endTime 结束时间
     * @return 查询结果
     */
    List<TestBizEntity> demonstrateTimeRangeQuery(LocalDateTime startTime, LocalDateTime endTime);

    /**
     * 演示动态SQL功能
     * 
     * @param entity 包含查询条件的实体
     * @return 查询结果
     */
    List<TestBizEntity> demonstrateDynamicSQL(TestBizEntity entity);

    /**
     * 演示分页查询功能
     * 
     * @param keyword 搜索关键词
     * @param bizType 业务类型
     * @param pageNum 页码
     * @param pageSize 页大小
     * @return 分页结果
     */
    Map<String, Object> demonstratePagination(String keyword, Integer bizType, int pageNum, int pageSize);

    /**
     * 演示业务编码唯一性检查
     * 
     * @param bizCode 业务编码
     * @param excludeId 排除的ID
     * @return 检查结果
     */
    boolean demonstrateUniquenessCheck(String bizCode, Long excludeId);

    /**
     * 演示批量状态更新
     * 
     * @param ids ID列表
     * @param status 新状态
     * @return 更新结果
     */
    Map<String, Object> demonstrateBatchStatusUpdate(List<Long> ids, Integer status);

    /**
     * 演示软删除功能
     * 
     * @param ids ID列表
     * @return 删除结果
     */
    Map<String, Object> demonstrateSoftDelete(List<Long> ids);
} 